import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace AiTrainingDatasetVersionsApi {
  /** 数据集版本信息 */
  export interface TrainingDatasetVersions {
    id: number; // 版本id
    datasetId?: number; // 数据集id
    versionNum?: string; // 版本号
    source: string; // 数据来源，如：manual/auto/imported
    totalSamples: number; // 数据总数
    description: string; // 数据集介绍
    taskType: string; // 阶段类型：sft-监督微调 pretrain-预训练 dpo-直接偏好优化 kto-Kullback-Leibler偏好调整 ppo-近端策略优化
    metadata: string; // 扩展元数据
    filePath: string; // 源文件存放路径
    dataFormat: string; // 数据格式：alpaca, sharegpt, llama2, custom
    changeLog: string; // 变更说明
    status?: string; // 状态：building-构建中,ready-准备完成,deprecated-弃用
  }
}

/** 查询数据集版本分页 */
export function getTrainingDatasetVersionsPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<
    PageResult<AiTrainingDatasetVersionsApi.TrainingDatasetVersions>
  >('/ai/training-dataset-versions/page', data, { desensitize, encrypt });
}

/** 查询数据集版本详情 */
export function getTrainingDatasetVersions(id: number) {
  return requestClient.get<AiTrainingDatasetVersionsApi.TrainingDatasetVersions>(
    `/ai/training-dataset-versions/get?id=${id}`,
  );
}

/** 新增数据集版本 */
export function createTrainingDatasetVersions(
  data: AiTrainingDatasetVersionsApi.TrainingDatasetVersions,
) {
  return requestClient.post('/ai/training-dataset-versions/create', data);
}

/** 修改数据集版本 */
export function updateTrainingDatasetVersions(
  data: AiTrainingDatasetVersionsApi.TrainingDatasetVersions,
) {
  return requestClient.put('/ai/training-dataset-versions/update', data);
}

/** 删除数据集版本 */
export function deleteTrainingDatasetVersions(id: number) {
  return requestClient.delete(`/ai/training-dataset-versions/delete?id=${id}`);
}

/** 批量删除数据集版本 */
export function deleteTrainingDatasetVersionsList(ids: number[]) {
  return requestClient.delete(
    `/ai/training-dataset-versions/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出数据集版本 */
export function exportTrainingDatasetVersions(params: any) {
  return requestClient.download('/ai/training-dataset-versions/export-excel', {
    params,
  });
}

/** 查询数据集版本版本号列表 */
export function getVersionNumList(datasetId: number) {
  return requestClient.post<
    AiTrainingDatasetVersionsApi.TrainingDatasetVersions[]
  >('/ai/training-dataset-versions/simple-list', { datasetId });
}
